from django.db import models
from django.utils.html import format_html
# Create your models here.


"""
定义Django模型，用于管理商品信息
Types模型：
存储商品的分类信息，采用的是两级分类（一级分类和二级分类）
CommodityInfos模型：
存储商品的详细信息，包括名称、规格、价格、库存等
自动记录商品的上架日期(auto_now_add=True)
支持商品主图和介绍图片文件的上传
"""
class Types(models.Model):
    """
        商品类型模型，用于存储商品的分类信息
    """
    # 自增主键
    id = models.AutoField(primary_key=True)
    # 一级分类标签
    firsts = models.CharField('一级分类', max_length=100)
    # 二级分类标签
    seconds = models.CharField('二级分类', max_length=100)
    def __str__(self):
        """
        字符串表示方法，返回id的字符串形式
        """
        return str(self.id)# 当这个对象被打印或显示时，就展示它的ID
    class Meta:
        """
        元数据类，用于定义模型在Admin界面的显示名称
        """
        verbose_name='商品类型'
        verbose_name_plural='商品类型'

class CommodityInfos(models.Model):
    """
        商品信息模型，用于存储商品的详细信息
    """
    id=models.AutoField(primary_key=True)
    name=models.CharField('商品名称',max_length=100)
    sezes=models.CharField('颜色规格',max_length=100)
    types=models.CharField('商品类型',max_length=100)
    price=models.FloatField('商品价格')
    discount=models.IntegerField('折后价格')
    stock=models.IntegerField('存货数量')
    sold=models.IntegerField('已售数量')
    likes=models.IntegerField('收藏数量')
    create=models.DateTimeField('上架时间',auto_now_add=True)
    # upload_to='imgs':文件存储的子目录（相对于 MEDIA_ROOT 设置）
    img=models.FileField("商品主图",upload_to=r'imgs')
    detail=models.FileField('商品介绍',upload_to=r'details')

    def __str__(self):
        return str(self.id)

    class Meta:
        verbose_name = '商品信息'
        verbose_name_plural = '商品信息'

    def colored_name(self):
        if '童装' in self.types:
            color_code='red'
        else:
            color_code='blue'
        return format_html(
            '<span style="color: {};">{}</span>',
            color_code,
            self.types,
        )
    colored_name.short_description="带颜色的商品类型"

'''
通过已有的数据库反向生成models
python manage.py inspectdb > app/models.py
'''